#ifndef _CM_RESULTCOLLECTION_H
#define _CM_RESULTCOLLECTION_H

/******************************************************************************
** @file	cm_resultcollection.h
** @author	Joel Chuca Condo
**
** @date	Sep 01, 2010
**
** @desc	This class represents to a collecction of registries, share folders,
**          proccesses, files and directories of a computer.
**
******************************************************************************/

#include <wmi_reader.h>
#include "cm_common.h"

class CMEXPORT CM_ResultCollection {
public:
    /**
    * Default constructor
    */
	CM_ResultCollection();

    /**
    * Destructor
    */
    ~CM_ResultCollection();

    /**
    * Gets a set of WMI_Process objects
    */
	WMI_Result<WMI_Process>& getProcesses();

    /**
    * Sets a set of WMI_Process objects
    */
    void setProcesses(WMI_Result<WMI_Process>& processes);

    /**
    * Gets a set of WMI_FileDirectory objects
    */
	WMI_Result<WMI_FileDirectory>& getFileDirs();

    /**
    * Sets a set of WMI_FileDirectory objects
    */
	void setFileDirs(WMI_Result<WMI_FileDirectory>& fileDirs);

    /**
    * Gets a set of WMI_Share objects
    */
	WMI_Result<WMI_Share>& getShares();

    /**
    * Sets a set of WMI_Share objects
    */
	void setShares(WMI_Result<WMI_Share>& shares);

    /**
    * Gets a set of WMI_Registry objects
    */
	WMI_Result<WMI_Registry>& getRegistries();

    /**
    * Sets a set of WMI_Registry objects
    */
	void setRegistries(WMI_Result<WMI_Registry>& registries);

private:
    /**
    * Holds a set of WMI_Process objects
    */
	WMI_Result<WMI_Process> _processes;

    /**
    * Holds a set of WMI_FileDirectory objects
    */
	WMI_Result<WMI_FileDirectory> _fileDirs;

    /**
    * Holds a set of WMI_Share objects
    */
	WMI_Result<WMI_Share> _shares;

    /**
    * Holds a set of WMI_Registry objects
    */
	WMI_Result<WMI_Registry> _registries;
};

#endif  //_BC_RESULTCOLLECTION_H
